﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using objetos;
using publico;
using System.Data;
using System.Text;
using System.Transactions;

namespace softsales.pagina.pedido 
{

    public partial class pedido_aberto : System.Web.UI.Page
    {

        OBJ_TB_PEDIDO o_tb_pedido = new OBJ_TB_PEDIDO();
        BLL_TB_PEDIDO b_tb_pedido = new BLL_TB_PEDIDO();
        DataSet ds = new DataSet();

        private int id_operacao { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (PUB_SESSAO.Logado())
            {


                if (Request["id_operacao"] != null)
                {
                    id_operacao = Convert.ToInt32(Request["id_operacao"].ToString());
                }

                if (!IsPostBack)
                {
                    PUB_PAGINACAO.Inicializa();

                    BTN_INCLUIR.PostBackUrl = string.Format("pedido_incluir.aspx?id_operacao={0}", id_operacao);
                    //// CAMPOS PARA FILTRO
                    DDL_FILTRO.Items.Add(new ListItem("FILTRO", "FILTRO"));
                    DDL_FILTRO.Items.Add(new ListItem("ID", "ID"));
                    DDL_FILTRO.Items.Add(new ListItem("CLIENTE", "CLIENTE"));

                    if (Equals(id_operacao, (int)PUB_ENUM.PEDIDO_OPERACAO.ENTRADA))
                    {

                        LBL_TITULO_PAGINA.Text = "Pedidos de Compras Abertos";

                    }
                    else
                    {

                        LBL_TITULO_PAGINA.Text = "Pedidos de Vendas Abertos";

                        
                    }
                    CarregaGrid();

                }

            }
        }

        public void CarregaGrid()
        {

            try
            {
                StringBuilder sb = new StringBuilder();


                List<string> lista = new List<string>();

                if (DDL_FILTRO.SelectedValue != string.Empty && TXT_PESQUISAR.Text != string.Empty)
                {
                    switch (DDL_FILTRO.SelectedValue)
                    {
                        case "ID":
                            lista.Add(string.Format(" tb_pedido.id = '{0}'", TXT_PESQUISAR.Text));

                            break;

                        case "CLIENTE":
                            lista.Add(string.Format(" tb_cadastro.nome LIKE '%{0}%'", TXT_PESQUISAR.Text));

                            break;

                    }


                }




                // LISTA TODOS OS PEDIDOS
                lista.Add(string.Format(" tb_pedido.id_situacao_pedido = {0}", (int)PUB_ENUM.PEDIDO_SITUACAO.ABERTO));
                lista.Add(string.Format(" tb_pedido.id_operacao = {0}", id_operacao));

                sb.Append(string.Join(" and ", lista.ToArray()));




                ds = b_tb_pedido.Selecionar(sb.ToString(), PUB_PAGINACAO.Sort, PUB_PAGINACAO.PageIndex, PUB_PAGINACAO.PageSize);

                if (ds.Tables[0].Rows.Count > 0)
                {
                    GRV_TB_PEDIDO.DataSource = ds;
                    GRV_TB_PEDIDO.DataBind();
                    PUB_PAGINACAO.Paginacao(true);
                }
                else
                {
                    GRV_TB_PEDIDO.EmptyDataText = "Nenhum registro foi encontrado";
                    GRV_TB_PEDIDO.DataBind();
                }
            }
            catch (Exception)
            {

                throw;
            }



        }

        protected void GRV_TB_PEDIDO_Sorting(object sender, GridViewSortEventArgs e)
        {

            PUB_PAGINACAO.Sort = e.SortExpression;
            if (PUB_PAGINACAO.SortDirection == SortDirection.Ascending)
            {
                PUB_PAGINACAO.SortDirection = SortDirection.Descending;
                PUB_PAGINACAO.Sort = PUB_PAGINACAO.Sort + " " + PUB_PAGINACAO.DESCENDENTE;
            }
            else
            {
                PUB_PAGINACAO.SortDirection = SortDirection.Ascending;
                PUB_PAGINACAO.Sort = PUB_PAGINACAO.Sort + "  " + PUB_PAGINACAO.ASCENDENTE;
            }

            CarregaGrid();


        }

        protected void BTN_INCLUIR_Click(object sender, EventArgs e)
        {
            Response.Redirect(string.Format("pedido_incluir.aspx?id_operacao={0}", id_operacao), false);
        }

        protected void IMG_BTN_EDITAR_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;

                if (btn != null)
                {
                    int id = Convert.ToInt32(btn.CommandArgument.ToString());
                    Response.Redirect(string.Format("pedido_editar.aspx?id={0}&id_operacao={1}", id, id_operacao), false);
                }

            }
            catch (Exception)
            {

                throw;
            }




        }

        protected void IMG_BTN_EXCLUIR_Click(object sender, ImageClickEventArgs e)
        {

            ImageButton btn = (ImageButton)sender;
            String id = btn.CommandArgument.ToString();

            try
            {
                o_tb_pedido = b_tb_pedido.SelecionarObjetoPorId(Convert.ToInt32(id));

                o_tb_pedido.id_situacao_pedido = (int)PUB_ENUM.PEDIDO_SITUACAO.CANCELADO;
                b_tb_pedido.Alterar(o_tb_pedido);


                Master.MSG_ALERTA(string.Format("Pedido Nº {0 foi cancelado com sucesso.}", id),"default.aspx", false);

            }
            catch (Exception)
            {
                
                throw;
            }
        }

        protected void GRV_TB_PEDIDO_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GRV_TB_PEDIDO.PageIndex = e.NewPageIndex;
            PUB_PAGINACAO.PageIndex = e.NewPageIndex;
            CarregaGrid();
        }

        protected void IMG_BTN_PESQUISAR_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = 0;
            CarregaGrid();
        }

        protected void IMG_BTN_PRIMEIRO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = 0;
            CarregaGrid();
        }

        protected void IMG_BTN_ANTERIOR_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.PageIndex - 1;
            CarregaGrid();
        }

        protected void IMG_BTN_PROXIMO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.PageIndex + 1;
            CarregaGrid();
        }

        protected void IMG_BTN_ULTIMO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.TotalDePaginas - 1;
            CarregaGrid();
        }

        protected void IMG_BTN_VISUALIZAR_Click(object sender, ImageClickEventArgs e)
        {
            ImageButton btn = (ImageButton)sender;
            String id = btn.CommandArgument.ToString();
            Response.Redirect(string.Format("pedido_visualizar.aspx?id={0}&id_operacao={1}", id, id_operacao), false);

        }

        protected void IMG_BTN_NFE_Click(object sender, ImageClickEventArgs e)
        {
            ImageButton btn = (ImageButton)sender;
            String id = btn.CommandArgument.ToString();
            
            Response.Redirect(string.Format("../nf/nf_incluir.aspx?id_pedido={0}&id_operacao={1}", id, id_operacao), false);
            //Response.Redirect(string.Format("pedido_fechar.aspx?id={0}&id_operacao={1}", id, id_operacao), false);
        }

        protected void IMG_BTN_ORDEM_PRODUCAO_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;
                String id = btn.CommandArgument.ToString();


            }
            catch (Exception)
            {
                
                throw;
            }
        }



    }
}